package com.example.gateway.config;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.Base64;

/**
 * JWT配置类
 * 提供JWT token的验证和解析功能
 * 
 * @author SimpleShop
 * @version 1.0
 */
@Component
public class JwtConfig {

    /**
     * JWT密钥，从配置文件中读取
     */
    @Value("${jwt.secret}")
    private String secret;

    /**
     * 编码后的密钥字节数组
     */
    private byte[] secretKey;

    /**
     * 初始化方法，将密钥编码为字节数组
     */
    @PostConstruct
    public void init() {
        this.secretKey = Base64.getEncoder().encode(secret.getBytes());
    }

    /**
     * 验证JWT令牌
     */
    public boolean validateToken(String token) {
        try {
            Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * 解析JWT令牌
     */
    public Claims parseToken(String token) {
        return Jwts.parser()
                .setSigningKey(secretKey)
                .parseClaimsJws(token)
                .getBody();
    }
}